package com.frost.springbook.controller;

import com.frost.springbook.constonts.Constants;
import com.frost.springbook.model.*;
import com.frost.springbook.service.BookService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@Slf4j
@RequestMapping("/book")
//@RestController
@ResponseBody
@Controller
public class BookController {
    @Autowired
    private BookService bookService;

    @RequestMapping(value = "/addBook", produces = "application/json")
    public Result addBook(BookInfo bookInfo) {
//        log.info("添加图书, bookInfo: " + bookInfo);
        if (!StringUtils.hasLength(bookInfo.getBookName())
                || !StringUtils.hasLength(bookInfo.getAuthor())
                || bookInfo.getCount() <= 0
                || bookInfo.getPrice() == null
                || !StringUtils.hasLength(bookInfo.getPublish())) {
            return Result.fail("参数错误");
        }
        try {
            bookService.insertBook(bookInfo);
        } catch (Exception e) {
            log.error("添加图书失败, addBook:{}", e);
            return Result.fail("内部发生错误异常");
        }
        return Result.fail("");
    }

    @RequestMapping("/getListByPage")
    public Result<PageResult<BookInfo>> getListByPage(PageRequest pageRequest, HttpSession session) {

        log.info("查询列表信息, pageRequest:{}", pageRequest);
//         // 验证用户是否登录
//        UserInfo user_session = (UserInfo)session.getAttribute(Constants.USER_SESSION_KEY);
//        if (user_session == null || user_session.getId() < 1) {
//            return Result.unlogin();
//        }
        if (pageRequest.getCurrentPage() < 1) {
            return Result.fail("非法参数");
        }
        PageResult<BookInfo> pageResult = bookService.getListByPage(pageRequest);

        return Result.success(pageResult);
    }

    @RequestMapping("/queryBookById")
    public BookInfo queryBookById(Integer bookId) {
        log.info("查询图书信息, bookId: " + bookId);
        return bookService.queryBookById(bookId);
    }

    /**
     * 更新图书/删除图书
     *
     * @param bookInfo
     * @return
     */
    @RequestMapping("/updateBook")
    public Result updateBook(BookInfo bookInfo) {
        log.info("更新图书, updateBook:{}", bookInfo);
        if (bookInfo.getId() < 0) {
            return Result.fail(false, "参数不合法");
        }
        try {
            Integer result = bookService.updateBook(bookInfo);
            if (result <= 0) {
                return Result.fail(false, "更新失败");
            }
            return Result.success(true);
        } catch (Exception e) {
            log.error("更新图书失败, e:{}", e);
            return Result.fail(false, e.getMessage());
        }
    }

    /**
     * 批量删除
     */
    @RequestMapping("/batchDelete")
    public boolean batchDelete(@RequestParam List<Integer> ids) {
        log.info("批量删除数据, ids:{}", ids);

        try {
            Integer result = bookService.batchDelete(ids);
            if (result <= 0) {
                return false;
            }
            return true;
        } catch (Exception e) {
            log.error("批量删除数据, ids:{}, e:{}", ids, e);
            return false;
        }
    }
}
